package main
import (
	"fmt"
	"math/rand"
	"sort"
	"time"
)

/*
随机生成10个整数（1-100） 保存到数组，
并倒序打印以及求平均值，求最大值，和最大值的下标，并查找是否有55
*/
func main(){
	var arr [10]int 
	sum := 0
	min := 1000
	max := 0
	rand.Seed(time.Now().UnixNano())
	for i :=0;i<len(arr);i++{
		arr[i] = rand.Intn(100)
		sum += arr[i]
		if(arr[i]<min){
			min = arr[i]
		}else if(arr[i]>max){
			max = arr[i]
		}
	}
	for i:=len(arr)-1;i>0;i-- {
		fmt.Printf("arr[%v]=%v\n",i,arr[i])
	}

	fmt.Println("arr=",arr)
	fmt.Println("avg=",sum/len(arr))
	fmt.Println("min=",min)
	fmt.Println("max=",max)

	slice := arr[:]
	sort.Ints(slice)
	fmt.Println("arr=",arr)

	BinaryFind(&arr,0,len(arr),29)
}

func BinaryFind(arr *[10]int,leftlndex int,rightlndex int,findval int){
	if rightlndex<leftlndex{
		fmt.Printf("没有此值=%v",findval)
		return
	}
	var middle = (leftlndex+rightlndex)/2
	if arr[middle] > findval{
		BinaryFind(arr,leftlndex,middle-1,findval)
	}else if arr[middle] < findval{
		BinaryFind(arr,middle+1,rightlndex,findval)
	}else{
		fmt.Println("有此值,index=",middle)
	}
}